import java.io.*;


public class bTable {

	private int liczbaBotow;
	private int liczbaLudzi;
	
	private int[][] kartyGraczy;
	private bHuman tabLudzi[];
	private bBot tabBotow[];
	
	bDeck talia;
	bCard card;
	
	private int i;
	
	
	bTable(int ludzie, int boty){
		
		liczbaLudzi = ludzie;
		liczbaBotow = boty;
		
		tabLudzi=new bHuman[ ludzie ];
		tabBotow=new bBot[ boty ];
		
		talia=new bDeck();			// resetuje talie
		talia.tasujTalie();
		
		for(i=0;i<ludzie;i++)
			tabLudzi[i]=new bHuman("Player "+(i+1));
		
		for(i=0;i<boty;i++)
			tabBotow[i]=new bBot("Bot "+(i+1));
	}
	
	private void rozdanie(){
		
		if(liczbaLudzi != 0 || liczbaBotow != 0){
			
			for(i =0; i<liczbaLudzi; i++){
				tabLudzi[i].hand = talia.rozdaj(5);
			}
			
			for(i=0; i<liczbaBotow; i++){
				tabBotow[i].hand=talia.rozdaj(5);
			}
			
			for(i=0; i<liczbaLudzi; i++){
				
				System.out.println(tabLudzi[i].imie);
				
				for(int z=0; z<5; z++){
					bCard.nazwaKarty(tabLudzi[i].hand[z]);
				}

				System.out.println("------------------------- ");
			}
		}
	}
	
	private void wymienianie(){
		
		if(liczbaLudzi!=0){
			
			int q;
			int liczba = 0;
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			
			for(i=0; i<liczbaLudzi; i++){
							
				System.out.println("Player"+i+" wymien karty (jeśli niechcesz nic zmieniac, wklep '0')");
				System.out.println("podawaj numery po kolei! Gdy chcesz skonczyc wpisz '0'");
				
				int tab[] = new int[4];
				
				for(q=0; q<4; q++){
					
					String slowo = in.readLine();
					liczba = Integer.parseInt(slowo);
					
					if(liczba==0){
						break;
					}
					else{
						
						if(liczba<6 && liczba>0){
							tab[q]=liczba-1;
						}
						else{
							System.out.println("TAK NIEMOZNA OSZUST!!!!");
							System.exit(0);
						}			
					}
				}
				if(q!=0){
					if(liczba==0){
						int yer[]=new int[q];
						System.arraycopy(tab,0,yer,0,q);
						tabLudzi[i].wymianaKart(yer, talia.rozdaj(q));
					}
					else{
						tabLudzi[i].wymianaKart(tab, talia.rozdaj(q));
					}
				}
			}	
		}
		
		if(liczbaBotow!=0){
			
			for(i=0; i<liczbaBotow; i++){
				// uwaga, bot sam sobie musi znalezc uklad
				tabBotow[i].botChangeCards();
				
				for(q=0; q<5; q++)
					if(tabBotow[i].hand[q]==-1)	
						System.arraycopy(talia.rozdaj(1), 0, tabBotow[i].hand, q, 1);
			}
		}
		
	}
	
	
	
	
	private int obliczanieWyniku(int[] hand){
		
		int iloscGraczy = liczbaLudzi + liczbaBotow;
		int[] tabUkladow = new int [iloscGraczy];
		
		for(i=0; i<liczbaLudzi; i++)
			System.arraycopy(card.uklady(tabLudzi[i].hand), 0, tabUkladow, i, 1);
		
		for(; i-liczbaLudzi < liczbaBotow; i++)
			System.arraycopy(card.uklady(tabBotow[i].hand), 0, tabUkladow, i, 1);
		
		int flaga=0;
		int buff=tabUkladow[0];
		for(i=1; i<iloscGraczy; i++){
			if(tabUkladow[i] > buff){
				buff = tabUkladow[i];
				flaga = 0;
			}
			else if(tabUkladow[i] == buff){
				flaga = 1;
			}				
		}
		
		if(flaga == 1){	// mamy remis
			
			int licznik = 0;
			for(i=0; i<iloscGraczy; i++)
				if(tabUkladow[i] == buff)
					licznik++;
				
			int[] remisy = new int[licznik];
			
			int j=0;
			for(i=0; i<iloscGraczy; i++){
				if(tabUkladow[i] == buff){
					remisy[j] = i;			// na j'tej pozycji w remisach jest indeks gracza(human v bot) majacego remis
					j++;
				}
			}
			
			
			int[][] kartyRemisow = new int[licznik][5];
			
			for(i=0; i<remisy.length; i++)
				if(remisy[i] <= liczbaLudzi-1)
					System.arraycopy(tabLudzi[i].hand, 0, kartyRemisow[i], 0, 5);
				else
					System.arraycopy(tabBotow[i].hand, 0, kartyRemisow[i], 0, 5);
			
			if(buff == 1){
				int pom1 = kartyRemisow[0][4];
				int pozycja=0;
				
				for(i=1; i<licznik; i++){
					if( kartyRemisow[i][4] > pom1){
						pozycja = i;
						pom1 = kartyRemisow[i][4];
					}					
				}
				
				if(pozycja <= liczbaLudzi-1)
					return 10+pozycja;	// i'ty czlowiek
				else
					return 20+pozycja;	// i'ty bot
			}
			else if(buff == 2){
				
				// dokonczyc to gunwo
				/******************************************************************************
				 * 
				 * *******************************************************************************************
				 */
								
				
				
			}
			
			
					
					
			
		}
		else{
			for(i=0; i<iloscGraczy; i++)
				if(tabUkladow[i] == buff)
					break;
			
			if(i <= liczbaLudzi-1)
				return 10+i;	// i'ty czlowiek
			else
				return 20+i;	// i'ty bot
		}
		
		
		
		
		
	}
	
	
	
}
